#include <iostream>
#include <string>
#include <vector>
#include <regex>

std::string analyze_words(std::string input_str) {
    if (input_str.empty() || input_str.find(' ') == std::string::npos) {
        return "Мало данных для анализа";
    }
    std::vector<std::string> words;
    std::string delimiter = " ";
    size_t pos = 0;
    std::string token;
    while ((pos = input_str.find(delimiter)) != std::string::npos) {
        token = input_str.substr(0, pos);
        words.push_back(token);
        input_str.erase(0, pos + delimiter.length());
    }
    words.push_back(input_str);
    int num_words = words.size();
    int num_capital_cyrillic = 0;
    int num_latin_char = 0;
    int num_short_words = 0;
    std::string longest_word = "";
    int longest_word_length = 0;
    int num_hyphen_words = 0;
    std::regex capital_cyrillic_regex("[А-Я]");
    std::regex latin_char_regex("[a-zA-Z]");
    for (const std::string& word : words) {
        if (std::regex_match(std::string(1, word[0]), capital_cyrillic_regex)) {
            num_capital_cyrillic++;
        }
        if (std::regex_search(word, latin_char_regex)) {
            num_latin_char++;
        }
        if (word.length() <= 3) {
            num_short_words++;
        }
        if (word.find('-') != std::string::npos) {
            num_hyphen_words++;
        }
        if (word.length() > longest_word_length) {
            longest_word = word;
            longest_word_length = word.length();
        }
    }
    return "Кол-во слов: " + std::to_string(num_words) + "\nКол-во слов с заглавной кириллической буквы: " + std::to_string(num_capital_cyrillic) + "\nКол-во слов содержащих латинский символ: " + std::to_string(num_latin_char) + "\nКол-во слов не превышающих 3 символа: " + std::to_string(num_short_words) + "\nКол-во слов в составе которых имеется дефис: " + std::to_string(num_hyphen_words) + "\nСамое длинное слово: " + longest_word + "\nДлина слова: " + std::to_string(longest_word_length);
}

int main() {
    std::string input_str;
    std::cout << "Введите несколько слов, разделенных пробелом: ";
    std::getline(std::cin, input_str);
    std::string result = analyze_words(input_str);
    std::cout << result << std::endl;
    return 0;
}
